/*
 * @Author: SeonHu
 * @Date: 2025-09-16 14:44:19
 * @LastEditors: SeonHu
 * @LastEditTime: 2025-09-23 15:28:18
 * @FilePath: \bg-vben\src\api\report\admin\print\model\index.ts
 * @Description:
 * Copyright © 2020-2025 SANQING Corporation, All rights reserved.
 */
import type { PrintReportArgumentDto } from '../../../model/print';

import { PrintReportDsModeEnum } from '@/enums/report/printReportDsModeEnum';
import { PrintReportTypeEnum } from '@/enums/report/printReportTypeEnum';

// #region 打印输入DTO
/** 打印输入DTO */
export interface PrintInputDto {
  /** 主键，唯一标识 */
  Id: bigint | string;
  /** 打印编码 */
  PrintCode: string;
  /** 打印名称 */
  PrintName: string;
  /** 打印备注 */
  Comments: string;
  /** 启用打印日志 */
  LogEnabled?: boolean | null;

  /** 数据版本 */
  DataVersion: bigint | string;
}
// #endregion
// #region 打印输出DTO
/** 打印输出DTO */
export interface PrintOutputDto extends PrintInputDto {
  /** 创建者编号 */
  CreatorId: bigint | null | string | undefined;
  /** 创建者名称 */
  CreatorName: string;
  /** 创建者昵称 */
  CreatorNickname: string;
  /** 创建时间 */
  CreatedTime: Date;

  /** 更新者编号 */
  UpdaterId: bigint | null | string | undefined;
  /** 更新者名称 */
  UpdaterName: string;
  /** 更新者昵称 */
  UpdaterNickname: string;
  /** 更新时间 */
  UpdatedTime?: Date | null;
}
// #endregion

// #region 打印模板输入简单DTO
/** 打印模板输入简单DTO */
export interface PrintTemplateInputDtoSimple {
  /** 主键，唯一标识 */
  Id: bigint | string;
  /** 打印编号 */
  PrintId: bigint | string;
  /** 模板名称 */
  TemplateName: string;
  /** 模板类型 */
  TemplateType: PrintReportTypeEnum;
  /** 指定用户 (User Assignment)  */
  UserAsgn?: boolean | null;
  /** 指定组织 (Organization Assignment)  */
  OrgAsgn?: boolean | null;
  /** 模板备注 */
  Comments: string;
  /** 标签 */
  Tag: null | string[] | undefined;
  /** 启用打印日志 */
  LogEnabled?: boolean | null;
  /** 是否启用 */
  Enabled: boolean;
  /** 启用自 */
  EnableFrom?: Date | null;
  /** 启用至 */
  EnableTo?: Date | null;

  /** 数据版本 */
  DataVersion: bigint | string;
}
// #endregion
// #region 打印模板输入DTO
/** 打印模板输入DTO */
export interface PrintTemplateInputDto extends PrintTemplateInputDtoSimple {
  /** 模板文件 */
  TemplateFile: PrintTemplateFileInputDto;
}
// #endregion
// #region 打印模板输出DTO
/** 打印模板输出DTO */
export interface PrintTemplateOutputDto extends PrintTemplateInputDtoSimple {
  /** 创建者编号 */
  CreatorId: bigint | null | string | undefined;
  /** 创建者名称 */
  CreatorName: string;
  /** 创建者昵称 */
  CreatorNickname: string;
  /** 创建时间 */
  CreatedTime: Date;

  /** 更新者编号 */
  UpdaterId: bigint | null | string | undefined;
  /** 更新者名称 */
  UpdaterName: string;
  /** 更新者昵称 */
  UpdaterNickname: string;
  /** 更新时间 */
  UpdatedTime?: Date | null;
}
// #endregion

// #region 打印模板文件输入DTO
/** 打印模板文件输入DTO */
export interface PrintTemplateFileInputDto {
  /** 主键，唯一标识 */
  Id: bigint | string;
  /** 模板编号 */
  TemplateId: bigint | string;
  /** 文件名称 */
  FileName: string;
  /** 文件Base64编码 */
  FileBase64: string;

  /** 数据源模式 */
  DsMode: PrintReportDsModeEnum;
  /** 使用当前数据库(拉模式下替换模板数据源类型和当前数据库类型匹配的连接) */
  UseCurDb: boolean;
  /** 实体类型名称(拉模式下提取指定类型的实体数据上下文连接) */
  EntityTypeName: string;
  /** 连接集合(拉模式下 `UseCurDb=false` 时使用) */
  Connections: string;
  /** 数据源配置(推模式) */
  DsConfig: string;

  /** 数据版本 */
  DataVersion: bigint | string;
}
// #endregion
// #region 打印模板文件输出DTO
/** 打印模板文件输出DTO */
export interface PrintTemplateFileOutputDto extends PrintTemplateFileInputDto {
  /** 文件SHA1值 */
  SHA1: string;
  /** 文件MD5值 */
  MD5: string;

  /** 创建者编号 */
  CreatorId: bigint | null | string | undefined;
  /** 创建者名称 */
  CreatorName: string;
  /** 创建者昵称 */
  CreatorNickname: string;
  /** 创建时间 */
  CreatedTime: Date;

  /** 更新者编号 */
  UpdaterId: bigint | null | string | undefined;
  /** 更新者名称 */
  UpdaterName: string;
  /** 更新者昵称 */
  UpdaterNickname: string;
  /** 更新时间 */
  UpdatedTime?: Date | null;
}
// #endregion

// #region 打印用户简单DTO
/** 打印用户简单DTO */
export interface PrintUserDtoSimple {
  /** 打印编号 */
  PrintId: bigint | string;
}
// #endregion
// #region 打印用户DTO
/** 打印用户DTO */
export interface PrintUserDto extends PrintUserDtoSimple {
  /** 用户编号 */
  UserId: bigint | string;
}
// #endregion

// #region 打印模板用户简单DTO
/** 打印模板用户简单DTO */
export interface PrintTemplateUserDtoSimple {
  /** 模板编号 */
  TemplateId: bigint | string;
  /** 是否默认（相对于打印编号） */
  IsDefault: boolean;
  /** 顺序编号（相对于打印编号） */
  OrderNumber: number;
}
// #endregion
// #region 打印模板用户DTO
/** 打印模板用户DTO */
export interface PrintTemplateUserDto extends PrintTemplateUserDtoSimple {
  /** 用户编号 */
  UserId: bigint | string;
}
// #endregion

// #region 打印模板用户输出简单DTO
/** 打印模板用户输出简单DTO */
export interface PrintTemplateUserOutputDtoSimple {
  /** 主键，唯一标识 */
  Id: bigint | string;

  /** 模板编号 */
  TemplateId: bigint | string;
  /** 模板名称 */
  TemplateName: string;
  /** 模板类型 */
  TemplateType: PrintReportTypeEnum;

  /** 用户编号 */
  UserId: bigint | string;

  /** 是否默认（相对于打印编号） */
  IsDefault: boolean;
  /** 顺序编号（相对于打印编号） */
  OrderNumber: number;

  /** 创建者编号 */
  CreatorId: bigint | null | string | undefined;
  /** 创建时间 */
  CreatedTime: Date;
  /** 更新者编号 */
  UpdaterId: bigint | null | string | undefined;
  /** 更新时间 */
  UpdatedTime?: Date | null;
}
// #endregion
// #region 打印模板用户输出DTO
/** 打印模板用户输出DTO */
export interface PrintTemplateUserOutputDto extends PrintTemplateUserOutputDtoSimple {
  /** 打印编号 */
  PrintId: bigint | string;
  /** 打印编码 */
  PrintCode: string;
  /** 打印名称 */
  PrintName: string;

  /** 指定用户 (User Assignment)  */
  UserAsgn: boolean;
  /** 指定组织 (Organization Assignment)  */
  OrgAsgn: boolean;

  /** 模板备注 */
  Comments: string;
  /** 标签 */
  Tag: null | string[] | undefined;

  /** 启用打印日志 */
  LogEnabled: boolean;

  /** 是否启用 */
  Enabled: boolean;
  /** 启用自 */
  EnableFrom?: Date | null;
  /** 启用至 */
  EnableTo?: Date | null;
}
// #endregion

// #region 打印组织DTO
/** 打印组织DTO */
export interface PrintOrganizationDto {
  /** 打印编号 */
  PrintId: bigint | string;
  /** 组织机构编号 */
  OrganizationId: bigint | string;
}
// #endregion

// #region 打印模板组织DTO
/** 打印模板组织DTO */
export interface PrintTemplateOrganizationDto {
  /** 模板编号 */
  TemplateId: bigint | string;
  /** 组织机构编号 */
  OrganizationId: bigint | string;
}
// #endregion

// #region 打印模板组织输出简单DTO
/** 打印模板组织输出简单DTO */
export interface PrintTemplateOrganizationOutputDtoSimple {
  /** 编号 */
  Id: bigint | string;

  /** 模板编号 */
  TemplateId: bigint | string;
  /** 模板名称 */
  TemplateName: string;
  /** 模板类型 */
  TemplateType: PrintReportTypeEnum;

  /** 组织机构编号 */
  OrganizationId: bigint | string;

  /** 创建者编号 */
  CreatorId: bigint | null | string | undefined;
  /** 创建时间 */
  CreatedTime: Date;
}
// #endregion
// #region 打印模板组织输出DTO
/** 打印模板组织输出DTO */
export interface PrintTemplateOrganizationOutputDto extends PrintTemplateOrganizationOutputDtoSimple {
  /** 打印编号 */
  PrintId: bigint | string;
  /** 打印编码 */
  PrintCode: string;
  /** 打印名称 */
  PrintName: string;

  /** 指定用户 (User Assignment)  */
  UserAsgn: boolean;
  /** 指定组织 (Organization Assignment)  */
  OrgAsgn: boolean;

  /** 模板备注 */
  Comments: string;
  /** 标签 */
  Tag: null | string[] | undefined;

  /** 启用打印日志 */
  LogEnabled: boolean;

  /** 是否启用 */
  Enabled: boolean;
  /** 启用自 */
  EnableFrom?: Date | null;
  /** 启用至 */
  EnableTo?: Date | null;
}
// #endregion

// #region 打印日志输出DTO
/** 打印日志输出DTO */
export interface PrintLogOutputDto {
  /** 编号 */
  Id: bigint | string;

  /** 打印编号 */
  PrintId: bigint | string;
  /** 打印编码 */
  PrintCode: string;
  /** 打印名称 */
  PrintName: string;

  /** 模板编号 */
  TemplateId: bigint | string;
  /** 模板名称 */
  TemplateName: string;

  /** 打印的键 */
  Key: string;
  /** 打印的值 */
  Value: string;
  /** 打印的参数 */
  Arguments: PrintReportArgumentDto[];

  /** 用户编号 */
  UserId: bigint | null | string | undefined;
  /** 用户名称 */
  UserName: string;
  /** 用户昵称 */
  UserNickname: string;

  /** 创建者编号 */
  CreatorId: bigint | null | string | undefined;
  /** 创建时间 */
  CreatedTime: Date;
}
// #endregion

// #region 打印模板节点
/** 打印模板节点 */
export interface PrintTemplateNode {
  /** 打印编号 */
  PrintId: string;
  /** 打印编码 */
  PrintCode: string;
  /** 打印名称 */
  PrintName: string;

  /** 模板编号 */
  TemplateId: string;
  /** 模板名称 */
  TemplateName: string;

  /** 是否选中 */
  IsChecked: boolean;
}
// #endregion

// #region 打印模板设置用户DTO
/** 打印模板设置用户DTO */
export interface PrintTemplateSetUserDto {
  /** 模板编号 */
  TemplateId: bigint | string;
  /** 要设置的用户编号 */
  UserIds: (bigint | string)[];
}
// #endregion
// #region 用户设置打印模板DTO
/** 用户设置打印模板DTO */
export interface UserSetPrintTemplateDto {
  /** 用户编号 */
  UserId: bigint | string;
  /** 要设置的模板编号 */
  TemplateIds: (bigint | string)[];
}
// #endregion

// #region 打印模板设置组织DTO
/** 打印模板设置组织DTO */
export interface PrintTemplateSetOrganizationDto {
  /** 模板编号 */
  TemplateId: bigint | string;
  /** 要设置的组织机构编号 */
  OrganizationIds: (bigint | string)[];
}
// #endregion
// #region 组织设置打印模板DTO
/** 组织设置打印模板DTO */
export interface OrganizationSetPrintTemplateDto {
  /** 组织机构编号 */
  OrganizationId: bigint | string;
  /** 要设置的模板编号 */
  TemplateIds: (bigint | string)[];
}
// #endregion
